# Generated migration to remove Django auth tables
# This is the proper Django way to delete tables

from django.db import migrations


class Migration(migrations.Migration):
    """
    删除 Django auth 应用创建的认证相关表
    
    这是一个数据迁移（Data Migration），用于删除不再需要的表结构。
    由于我们已经从 INSTALLED_APPS 中移除了 django.contrib.auth，
    这些表应该被删除。
    
    注意：这个迁移需要手动创建，因为 Django 不会自动为已移除的应用生成删除迁移。
    """

    dependencies = [
        ("xiaoyibot_app", "0002_messagerecord"),
    ]

    operations = [
        # 使用 RunSQL 操作来执行自定义 SQL
        # 这样可以精确控制要删除的表
        migrations.RunSQL(
            # 前向迁移：删除表（如果存在）
            # 注意：使用 IF EXISTS 确保迁移可以安全执行
            # - 如果表存在：删除表
            # - 如果表不存在：不报错，迁移仍然成功完成（幂等性）
            sql=[
                # 删除外键相关的表（需要先删除，因为有外键依赖）
                ("DROP TABLE IF EXISTS `auth_group_permissions`;", None),
                ("DROP TABLE IF EXISTS `auth_user_groups`;", None),
                ("DROP TABLE IF EXISTS `auth_user_user_permissions`;", None),
                # 删除主表
                ("DROP TABLE IF EXISTS `auth_permission`;", None),
                ("DROP TABLE IF EXISTS `auth_group`;", None),
                ("DROP TABLE IF EXISTS `auth_user`;", None),
            ],
            # 反向迁移：理论上可以重新创建这些表，但这里返回 None 表示不可逆
            # 如果需要，可以在这里定义 CREATE TABLE 语句
            reverse_sql=None,
        ),
    ]

